/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package negocio;

import datos.TipoConstruccion;
import java.util.List;
import javax.ejb.Remote;

/**
 *
 * @author Ing. Monica Merlo, Ing. Agustin  Fernandez
 */
@Remote
public interface GestorTipoConstruccionRemote {

     /***
     * Retorna todas las instancias de TipoConstruccion
     * @return lista con todos las instancias de Tipo de Construccion
     * almacenadas en la base de datos, y null en caso contrario
     * interfaz remota
     */
    public List consultarTipoConstruccionRemote();

     /***
     * retorna una lista sólo con los nombres de las instancias de TipoConstruccion ordenados.
     * @return lista con todos los nombres de las instancias de TipoConstruccion ordenados por nombre
     * y null en caso contrario
     * interfaz remota
     */
    public List tiposConstruccionRemote();

    /***
     * Agrega una nueva instancia de TipoConstruccion a la BD.
     * @param tipoConstruccion
     * @return true si la instancia tipoConstruccion ha sido persistida
     * con exito y false en caso contrario
     * interfaz remota
     */
    public boolean agregarTipoConstruccionRemote(TipoConstruccion tipoConstruccion);

    /***
     * Actualiza una instancia existente en la BD de tipo TipoConstruccion.
     * @param tipoConstruccion
     * @return true si la instancia tipoConstruccion ha sido modificada y actualizada
     * en la base de datos con exito y false en caso contrario
     * interfaz remota
     */
    public boolean modificarTipoConstruccionRemote(TipoConstruccion tipoConstruccion);

    /***
     * Busca una instancia de TipoConstruccion, a partir de su ID y una vez encontrada
     * es removida de la BD.
     * @param tipoConstruccion
     * @return true si la instancia tipoConstruccion ha sido encontrada y eliminada
     * de la base de datos con exito y false en caso contrario
     * interfaz remota
     */
    public boolean eliminarTipoConstruccionRemote(TipoConstruccion tipoConstruccion);

     /***
     * Busca una instancia TipoConstruccion en la BD, si es encontrada retorna true,
     * en caso contrario false.
     * @param tipoConstruccion
     * @return true si existe alguna instancia tipoConstruccion con nombre igual a "nombre"
     * y false en caso contrario
     * interfaz remota
     */
    public boolean existeNombreTipoConstruccionRemote(TipoConstruccion tipoConstruccion);

    /***
     * Busca si existe en la BD el nombre de una instancia de TipoConstruccion, para no
     * almacenar dos instancias distintas con el mismo nombre. si existe retorna true,
     * en caso contrario retorna false.
     * @param tipoConstruccion
     * @return true si existe alguna instancia de TipoConstruccion con nombre = "nombre" e id <> "id"
     * y false en caso contrario
     * interfaz remota
     */
    public boolean existeNombreTipoConstruccionModificarRemote(TipoConstruccion tipoConstruccion);
    
}
